Personal computers have become an important part of people's lives. Users typically personalize their usage of the computer by installing complex software and by personalizing various setting on these computers. Installation is sometimes a relatively complex process, which may take tens of minutes for complex software. In addition, a user is often required to provide answers to various questions and have system privileges which allow installation. After installation is completed, a user often expends a large effort in selecting personalization settings desirable to him/her. Furthermore, a user may be required to restart his computer.
A typical software installation and removal process includes the following steps. Many software programs are never uninstalled, though this option typically remains:
(a) Compatibility test. Making sure that the target system (hardware and/or software) is compatible with the software to be installed. In some cases, a backup of system configuration and/or data is performed at this step.
(b) Copying files to the target system.
(c) Subscription. Various shared system tables and directories are updated with the installation and application information.
(d) Configuration. The installed software is configured for the target system, for example, based on user preferences, file locations and security settings.
(e) Customization. Various user preferences are set, sometime using queries to the user, sometimes by copying existing settings on the target computer.
(f) Clean-up. Residues of the installation process are removed. In some cases, restarting the target computer is required to complete installation. Typically, an uninstall instruction file is created and saved.
In a typical installation, some or all of the following fifteen component types are provided:
(1) Exe files
(2) Data files
(3) Configuration Files
(4) Application Folders
(5) Dynamic Dll file
(6) Desktop Settings
(7) Registry Keys
(8) File Extensions (definitions)
(9) Code Libraries
(10) Environment Variables
(11) Services
(12) Application Shares
(13) Integration with OS
(14) Drivers
Of these items, the last eight include integration/registration/changing the OS.
However, once a user walks away from the personal computer, that user also walks away from all the past effort. Several solutions have been suggested to allow a person to port his effort. A straight forward solution is using a portable computer. However, even such computers may have a significant weight and/or otherwise be inconvenient.
U.S. Pat. No. 6,405,362 to Shih et al., issued on Jun. 11, 2002, the disclosure of which is incorporated herein by reference, describes an operating system of a computer, which automatically installs a program from a removable memory unit responsive to detecting connection of the removable memory unit to the computer and uninstalls the program when the removable memory unit is disconnected from the computer.
In one embodiment, the Shih patent suggests performing a complete installation of the program, each time the removable memory unit is connected to the computer. Such a procedure, however, is time consuming, especially when a plurality of programs need to be installed.
In another embodiment, the Shih patent suggests running the program from the removable memory unit without installation. This solution is suggested also by US Patent Application Publication No. 200310212862 to James, published on Nov. 13, 2003, the disclosure of which is incorporated herein by reference. Running programs without installation, however, has many drawbacks.
Another solution is to prepare memory images of the program in an installed format and to copy them byte by byte into the computer memory. Upon completion of the copying, the computer is rebooted to allow use of the program. This solution is described, for example, in U.S. Pat. No. 5,604,906, to Murphy et al., U.S. Pat. No. 5,953,533 to Fink et al., US Patent Application Publication No. 2002/0108033 to Kroening, PCT Publication No. WO 01/73543 to Raymond et al., and U.S. Pat. No. 6,080,207 to Kroening et al., the disclosures of all of which documents are incorporated herein by reference.
US Patent Application Publication No. 2004/0095382 to Fisher et al., published on May 20, 2004, the disclosure of which is incorporated herein by reference, describes a portable memory carrying an operating system which is used to boot a host computer.
US Patent Application Publication No. 2005/0240918 to Shlomai, published on Oct. 27, 2005 and U.S. Pat. No. 5,642,417 to Stringer, issued on Jun. 24, 1997, the disclosures of which are incorporated herein by reference, describe a method of generating a virtual registry which is stored with an application program on a portable memory. In operation, an API of the application is mapped to the virtual registry and thus circumvents the operating system (OS) of a computer on which the application is run. This method is problematic due it being classified as a security hazard and hence being blocked by firewalls and safe OS.
Another solution is found in products such as the MIGO (www.migosoftware.com) which copy and synchronize information between a computer and a portable storage device. However, not all personalization information and application can be synchronized in this manner. Further, if the computer to which the user moved lacks an application, the MIGO and its like do not provide this application. Another solution is to provide a portable device that also includes a CPU, however, this solution is typically CPU and/or memory limited.
A MojoPack (www.mojopac.com) is subset of OS layers which are sufficient to create independent virtual environment for installation and launching of some software applications. The virtual environment redirects application files and system registry entries to a USB memory drive using file and registry system drivers.
Ceedo (www.ceedo.com) uses application file and system registry virtualization. A VM (virtual machine) redirects system calls of applications by technique known as “windows API hooking” to data sources and a file system on a USB memory drive.
U.S. Pat. No. 6,263,363 to Rosenblatt et al., the disclosure of which is incorporated herein by reference, modifies the registry for customizing a computer to an environment stored on the Internet.
US Patent Application Publication No. 2004/0001088, the disclosure of which is incorporated herein by reference, describes a portable key device used to transport a computing environment from one computer to another.
Korean Patent Application Publication No. 2003-0032656, the disclosure of which is incorporated herein by reference, describes an automatic software installation method using an event file which records a process of installation at a first computer and then executes the process on a second computer using the event file.
Japan Patent Application Publication No. 10-198569, the disclosure of which is incorporated herein by reference, describes an installation process using remote control.
US Patent Application Publication No. 2007/011672, the disclosure of which is incorporated herein by reference teaches how a software application can be installed under one operating system, and accessed for execution by a second operating system compatible with the first operating system by identifying and making appropriate changes to system parameters in the second operating system
US Patent Application Publication No. 2006/0168564, the disclosure of which is incorporated herein by reference, describes a method and apparatus for automating the installation of a plurality of operating system and device management software combinations, with their respective and related configuration data, onto a plurality of information management system platform hardware including having all related details of the integration, installation and validation processes be automatically recorded and stored in a manner conducive to future retrieval, review, analysis, modification, and possible re-use, using a chained integration process (CIP), which treats a combination of information handling system hardware and a software delivery stack, including BIOS, device drivers, firmware, and other software components, as input.